package cn.com.blueInfo.bpm.number.service;

import cn.com.blueInfo.bpm.number.request.NumberRuleComponentDTO;
import cn.com.blueInfo.bpm.number.response.NumberRuleComponentVO;
import cn.com.blueInfo.utils.result.ResultInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 编号规则组成配置 业务服务类
 * @author suxch
 * @since 2025-08-24 01:39:05
 */
public interface NumberRuleComponentService {

    /**
     * 新增编号规则组成配置
     * @param numberRuleComponentDTO 编号规则组成配置参数
     */
    ResultInfo<Integer> addNumberRuleComponent(NumberRuleComponentDTO numberRuleComponentDTO);

    /**
     * 批量新增编号规则组成配置
     * @param numberRuleComponentDTOList 编号规则组成配置参数列表
     */
    ResultInfo<Integer> batchAddNumberRuleComponent(List<NumberRuleComponentDTO> numberRuleComponentDTOList);

    /**
     * 删除编号规则组成配置
     * @param numberRuleComponentId 编号规则组成配置ID
     */
    ResultInfo<Integer> removeNumberRuleComponent(Long numberRuleComponentId);

    /**
     * 批量删除编号规则组成配置
     * @param numberRuleComponentIdList 编号规则组成配置ID列表
     */
    ResultInfo<Integer> batchRemoveNumberRuleComponent(List<Long> numberRuleComponentIdList);

    /**
     * 更新部分编号规则组成配置
     * @param numberRuleComponentUpdatePartialDTO 编号规则组成配置参数
     */
    ResultInfo<Integer> modifyNumberRuleComponentPartial(
            NumberRuleComponentDTO.UpdatePartialDTO numberRuleComponentUpdatePartialDTO);

    /**
     * 更新全部编号规则组成配置
     * @param numberRuleComponentDTO 编号规则组成配置参数
     */
    ResultInfo<Integer> modifyNumberRuleComponent(NumberRuleComponentDTO numberRuleComponentDTO);

    /**
     * 查询一条编号规则组成配置
     * @param numberRuleComponentId 编号规则组成配置ID
     */
    ResultInfo<NumberRuleComponentVO> queryNumberRuleComponentById(Long numberRuleComponentId);

    /**
     * 分页查询编号规则组成配置
     * @param numberRuleComponentQueryDTO 编号规则组成配置参数
     */
    ResultInfo<Page<NumberRuleComponentVO>> queryNumberRuleComponentPage(
            NumberRuleComponentDTO.QueryDTO numberRuleComponentQueryDTO);

    /**
     * 根据条件查询 编号规则组成配置 数量
     * @param numberRuleComponentQueryDTO 编号规则组成配置参数
     */
    ResultInfo<Long> queryNumberRuleComponentCount(NumberRuleComponentDTO.QueryDTO numberRuleComponentQueryDTO);

    /**
     * 根据条件查询 编号规则组成配置
     * @param numberRuleComponentQueryDTO 编号规则组成配置参数
     */
    ResultInfo<List<NumberRuleComponentVO>> queryNumberRuleComponentList(
            NumberRuleComponentDTO.QueryDTO numberRuleComponentQueryDTO);

}
